Computer networks are becoming increasingly important to the way computers are used for business, recreation, and communication. The ability of a computer network to easily and efficiently move data from a sender to the intended destination is critical to the usefulness of computer networks, and to their ability to handle the large amount of varying traffic that is encountered in modem network environments.
Networks are often characterized as local area networks (LANs) or wide area networks (WANs). LANs typically comprise anywhere from a few computers sharing a common network to large groups of computers located physically near each other such as an entire building's network. WANs are larger in scope, and include networks that have geographically dispersed computers such as the Internet. Networks can be further characterized by the types of data that they carry or the protocols they use, such as IPX networks that are often found in Novell local area networks, and TCP/IP networks that are often found in the Internet and in other LANs and WANs. Also, different physical network connections and media such as Ethernet, Token Ring, Asynchronous Transfer Mode (ATM), and Frame Relay exist, and can be carried over copper, optical fiber, via radio waves, or through other media.
Networks of different types or that are geographically dispersed can be interconnected via technologies, such as routers, switches, and bridges. Bridges simply translate one network protocol to another and provide a communications “bridge” between different types of networks. Switches allow connectivity of a number of switched devices on a network to a single network connection, and in effect filter and forward packets between the network connection and the various attached devices. Routers typically do little filtering of data, but receive data from one network and determine how to direct the data to the intended destination networked device. Routers typically use headers of a packet, such as an IP packet header for Internet communication to determine the intended destination for a packet, and communicate with other routers using protocols, such as the Internet Control Messaging Protocol (ICMP), to determine a desired route for a packet to travel from one network device to another. Routers therefore are primarily responsible for receiving network traffic and routing it across multiple LANs or across a WAN to the intended destination.
Data packet routing is a critical element of network performance, and can become a problem if large local area networks send a lot of network traffic through a single router connection to other networks. Factors such as transforming data of one type or in one protocol to another protocol or format can require significant processing, and serve to further tax the ability of routers to connect various types of networks. Some routers incorporate multiple processors to handle different data protocols and formats, and are configured by the manufacturer by specially configuring the hardware or by hard-coding elements of software to meet specific requirements of a specific customer application. Unfortunately, using such a router in a changed environment is often less than optimal, and reconfiguration of the router would require re-coding the control software or replacement of hardware elements. Further, performance of the various functions performed on each packet in a stream of packets is often not optimal, both because certain parts of the packet forwarding process are repeated and because the various resources available may not be allocated in a manner efficient for some situations.
It is therefore generally desirable to have a system or method for controlling routing of network data that provides efficient configuration of routing functionality and that optimizes use of available resources.